
/**
 * 函数组合器：将多个函数按顺序组合执行
 * @param {...Function} funcs - 需要组合的函数数组
 * @returns {Function} - 组合后的新函数
 */
// const compose = (...funcs) => {
//   console.log('funcs', funcs);//现在的funcs是传入的两个函数
//   return (initialValue) => {
//     console.log('initialValue', initialValue);//这个是2
//     // return funcs.reduce((acc, fn) => fn(acc), initialValue);//fn(acc)这里的第一次是4第二次是5
//     return funcs.reduce((acc, fn) => fn(acc), initialValue);//fn(acc)这里的第一次是4第二次是5
//   };
// };


function compose (...args) {
  console.log('args', args);//就是两个函数
  // return function (params) {//2
  //   let result = params;//4
  //   args.map(fn => {
  //     result = fn(result)//4
  //   })
  //   return result
  // }

  return function (params) {
    let result = params
    args.map((fn) => {
      result = fn(result)
    })
    return result
  }
}

// 使用示例
const add = x => x + 1;
const multiply = x => x * 2;
const composed = compose(multiply, add);
console.log(composed(2)); // 输出：5 (等价于 (2*2+1))

